The present invention relates to an apparatus and method for the design and configuration of a motion control algorithm of an AC machine (for example, an induction motor or permanent magnet motor). The new method, which is called Motion Control Engine (“MCE”), provides a variety of basic functional control elements implemented in hardware, and uses a unique motion control sequencer to generate connections between control elements. The motion control sequencer routes signals between functional control elements as specified by the user to achieve fully configurable control signal connections.
Unlike the traditional development method for motion control algorithms, which is based on either microcontroller or DSP (Digital Signal Processor) programming, MCE provides faster computation, smaller silicon die area and significant design time reduction.
Designing high performance servo control systems is a complex task. It normally involves multiple talents and disciplines in different technology fields. Therefore, many design engineers are typically involved in the design process which involves a deep understanding of power electronics technology, hardware integration, advanced control algorithms, flexible user interfaces, network communication, and so on.
Among those design factors are control algorithms, which critically influence the final system performance. Control algorithms include various elements to interface to sensors, which are closely coupled with power electronics circuit and elements. Position, speed, and current are essential variables that need to be fedback from appropriate sensors. Controlling three-phase AC motors requires Field Orientation Control (FOC). The objective of the FOC is to establish linear control of torque by transforming three-phase AC current and voltage.
The FOC senses 3-phase motor current and transforms the sensed currents into two variables, torque current and field current, so that it simplifies torque control. Therefore, closed loop current control actually contains two separate current control loops. One is for torque current and the other is for field current. Each loop is identical and consists of several control elements. Vector rotator, Clark transformation, Proportional plus integral (PI), PWM, and current sensing are some of these essential control elements in each closed loop current control.
Besides the PWM and current sensing functions, all control elements are traditionally implemented by software code in a motion control DSP or microcontroller. In a real-time control environment with a DSP and a microcontroller, these current control loops are implemented in high priority tasks. It requires intensive knowledge or real-time control to make sequential execution of each control element to complete computation within a specified time frame.
These tasks, often driven by specific hardware events/interrupts, require precise execution timing of software, requiring sequencing of instruction coding to manipulate hardware at specific times in order to control a motor.
When designing a motion control algorithm such as field orientation control (FOC), two stages are normally involved in the design effort. One stage is to figure out the required control structure in a control block diagram (an example is shown in FIG. 1). The other stage is to implement by programming the code which is executed by the selected microcontroller or DSP.
The first stage is the task to define the detailed structure of the control scheme with each control element, sampling frequency, data range, quantization error, resolution, and data format. This task is normally achieved by a control engineer. An example is shown in FIG. 1. The second stage is to implement a defined algorithm in software code such as assembly language and/or C language, and test the implemented code. This task is implemented by a software engineer or the same control engineer depending on the project.
When implemented in software code using a conventional microcontroller or DSP, execution time by the selected microcontroller or DSP will vary depending on the skill and coding experience of the software engineer. If execution time cannot be met to the original specification, the bandwidth of the control will not be acceptable, therefore reducing the dynamic performance of the motor drive. Readability of the code also depends on each person's skill regardless of the coding language the engineer chooses. This will often create an undesired result that does not meet the original performance target. More specifically, computation time or execution time of the control task (i.e. the closed loop current control) may exceed the desired time due to improper coding technique combined with the nature of sequential execution of the microcontroller or DSP.
FOC for servo application and sensorless control is usually written in the assembly language rather than a high level language. This is due to the fact that these applications often demand fast computation and update rates in order to satisfy growing demand for higher dynamic performance. Sometimes special coding techniques, (i.e., use of shift instructions to achieve fast multiply/divide functions are used to achieve fast computation to overcome classic computation power sluggishness.
Regardless of high level language (i.e., C, C++, etc) or low level assembly language, and regardless of the use of a DSP or a microcontroller, programming requires the specific skill of writing motion action into all sequential computational descriptions consisting of thousand of lines instructions. Then all of the pieces of source code of the software modules (i.e., software is normally modularized) are compiled and linked together. Finally, it becomes one big executable object code which contains all functions including closed loop control, user interface sequencing, network communication, etc. If errors or mistakes exist, then they must be discovered and fixed at the source code level, and recompiled and linked again to produce the revised version of the executable object code. This process is usually repeated a number of times to reach the final product.
Development time required for programming and coding also varies. It takes less time for an experienced software engineer. Software tasks are sometimes split between non-control (or non real-time) related tasks and control (or real-time) tasks. For some cases, multiple software engineers work together on the same project. For example, one software engineer is assigned to work on the control tasks while another software engineer is assigned to work on the communication and user interface tasks. Timing interface and data interface between these tasks becomes very critical and creates additional effort in the development of complete software.
Although it has been the established development method over the last two decades, microcontroller and/or DSP programming always requires special attention to minimize the development time while meeting execution time or computation time of the implemented code.
Another trade-off is code maintenance. The code maintenance cost is usually a hidden cost and does not show up at the start of development phase.
Therefore, quick motion control algorithm development while achieving high performance is still a challenging job for high performance servo system and sensorless AC motor drive system development.